/**
题目:
    给你两个二进制字符串，返回它们的和（用二进制表示）。

输入为 非空 字符串且只包含数字 1 和 0。

 

示例 1:

输入: a = "11", b = "1"
输出: "100"
示例 2:

输入: a = "1010", b = "1011"
输出: "10101"
 

提示：

每个字符串仅由字符 '0' 或 '1' 组成。
1 <= a.length, b.length <= 10^4
字符串如果不是 "0" ，就都不含前导零。


来源：力扣（LeetCode）
链接：https://leetcode-cn.com/problems/add-binary
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
*/
func addBinary(a string, b string) string {
    i, j,c,res := len(a) - 1, len(b) -1,rune(0),""
    for i >= 0 || j >= 0{
        m,n := rune(0), rune(0)
        if i >= 0{
            m = rune(a[i]) - '0'
        }
        if j >= 0{
            n =  rune(b[j]) - '0'
        }
        sum := c + m + n
        c = sum / 2
        res = string(byte(sum % 2) + '0' ) + res
        i--
        j--
    }

    if c == 1{
        res = "1" + res
    }
    return  res
}